//
//  seqlist.h
//  线性表顺序存储与实现
//
//  Created by ZJ on 2018/7/13.
//  Copyright © 2018年 iCatch Technology Inc. All rights reserved.
//

#ifndef seqlist_h
#define seqlist_h

#include <stdio.h>

typedef void SeqList;
typedef void SeqListNode;

/**
 创建链表

 @param capacity 链表容量
 @return 返回链表的首地址
 */
SeqList* SeqList_Create(int capacity);

/**
 销毁链表

 @param list 链表首地址
 */
void SeqList_Destroy(SeqList* list);

/**
 清空链表

 @param list 链表首地址
 */
void SeqList_Clear(SeqList* list);

/**
 获取链表
 
 @param list 链表首地址
 @return 链表中元素长度
 */
int SeqList_Length(SeqList* list);

/**
 获取链表的最大容量
 
 @param list 链表地址
 @return 链表的最大容量
 */
int SeqList_Capacity(SeqList* list);

/**
 向链表中插入一个节点
 
 @param list 链表
 @param node 节点
 @param pos 插入位置
 @return 插入是否成功，0表示成功，其他失败
 */
int SeqList_Insert(SeqList* list, SeqListNode* node, int pos);

/**
 获取链表中指定位置元素

 @param list 链表首地址
 @param pos 位置
 @return 指定位置元素
 */
SeqListNode* SeqList_Get(SeqList* list, int pos);

/**
 删除指定位置元素

 @param list 链表首地址
 @param pos 位置
 @return 指定位置元素
 */
SeqListNode* SeqList_Delete(SeqList* list, int pos);

#endif /* seqlist_h */
